﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using SMA.GENTEv1;
using Telerik.Web.UI;

public partial class Protegidos_Administracao_Cadastros__popup_acpIncluirFrotaClassificacao : PageBase 
{
    private int idclassificacao = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["IdClassificacao"] != null)
            idclassificacao = int.Parse(Request.QueryString["IdClassificacao"].ToString());

        if (!IsPostBack)
        {
            CarregarCategoriaCNH();
            if (Request.QueryString["IdClassificacao"] != null)
                PreencherDados(idclassificacao);
        }
    }

    #region Eventos
    protected void btnGravar_Click(object sender, EventArgs e)
    {
        try
        {
            Salvar();
            ExibirResultados(true);
            ExibirMensagem(false, "Operação efetuada com sucesso!");
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void btnFechar_Click(object sender, EventArgs e)
    {
        ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind();", true);
    }

    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        //if (e.Argument == "RebindContrato")
        //{
        //    RadGrid2.MasterTableView.SortExpressions.Clear();
        //    RadGrid2.MasterTableView.GroupByExpressions.Clear();
        //    RadGrid2.MasterTableView.CurrentPageIndex = RadGrid2.MasterTableView.PageCount - 1;
        //    RadGrid2.Rebind();
        //    CarregarDadosContrato();
        //}
    }
    #endregion

    #region Metodos
    private void OcultaCampos(bool oculta)
    {
        btnGravar.Visible = !oculta;
    }

    private void ExibirResultados(bool oculta)
    {
        btnGravar.Visible = !oculta;

        trTitulo.Visible = !oculta;
        trClassificacao.Visible = !oculta;
        trCategoriaCNH.Visible = !oculta;
    }

    private void PreencherDados(int _idclassificacao)
    {
        FrotaModeloClassificacao classificacao = new FrotaModeloClassificacao(_idclassificacao, true, true);

        txtClassificacao.Text = classificacao.Descricao;

        string categoriasSel = "";
        foreach (RadComboBoxItem item in rcbCategoriaCNH.Items)
        {
            var consulta = (from categLista in classificacao.CategoriaCNH
                            where categLista.IdCategoriaCNH == int.Parse(item.Value)
                            select new
                            {
                                categLista.IdCategoriaCNH,
                                categLista.Categoria
                            });

            if (consulta.ToList().Count == 0)
            {
                CheckBox chk = (CheckBox)item.FindControl("chk1");
                chk.Checked = false;
            }
            else
            {
                categoriasSel += string.Concat(",", consulta.ToList()[0].Categoria);
            }
        }
        if (categoriasSel != string.Empty)
            categoriasSel = categoriasSel.Substring(categoriasSel.IndexOf(",", 0) + 1);
        rcbCategoriaCNH.Text = categoriasSel;
    }

    private void CarregarCategoriaCNH()
    {
        CategoriaCNH categoria = new CategoriaCNH();
        rcbCategoriaCNH.DataSource = categoria.SelectAll();
        rcbCategoriaCNH.DataBind();
    }

    protected void Salvar()
    {
        try
        {
            FrotaModeloClassificacao classificacao = new FrotaModeloClassificacao();
            classificacao.IdFrotaModeloClassificacao = idclassificacao;
            classificacao.Descricao = txtClassificacao.Text;

            List<CategoriaCNH> listCategoriaCNH = new List<CategoriaCNH>();
            foreach (RadComboBoxItem item in rcbCategoriaCNH.Items)
            {
                CheckBox chk = (CheckBox)item.FindControl("chk1");
                if (chk.Checked)
                {
                    CategoriaCNH categoria = new CategoriaCNH(int.Parse(item.Value), false);
                    listCategoriaCNH.Add(categoria);
                }
            }
            classificacao.CategoriaCNH = listCategoriaCNH;

            classificacao.Salvar();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void ExibirMensagem(bool _msgErro, string _textoMsg)
    {
        try
        {
            OcultaMsgPagina(false);
            if (_msgErro)
            {
                lblResultado.ForeColor = System.Drawing.Color.Red;
                lblResultado.Text = _textoMsg;
            }
            else
            {
                lblResultado.ForeColor = System.Drawing.Color.Black;
                lblResultado.Text = _textoMsg;
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void OcultaMsgPagina(bool oculta)
    {
        trMensagem.Visible = !oculta;
    }
    #endregion
}
